const router=require("express").Router();
const multer=require("multer");
const fs=require("fs");


const upload=multer({
  dest:"upload",
  limits:{
    fileSize:1213121
  }
});

//要实现的功能就是用户上传文件，服务器可以读取到这个文件，并且将文件加载到页面中
//上传文件+读取文件这个可以使用

let arr=[];

var single=upload.single("myfile");

//这个处理器的作用是在服务器获得上传文件后返回一个渲染页面
router.get("/",function (req,res){
  // res.render("16",{list:arr}); 这是第一种写法,目的是为了在路由处理器中定义变量，然后在ejs文件中引用
  //这是第二种写法
  res.locals.list=arr;
  res.render("16");
});


//加载图片一般是 <img src="img/imgname"
router.get("/img/:imgname",function (req,res){
  //createReadStream 创建一个读取流
          const rs=fs.createReadStream("upload/"+req.params.imgname);
  //Pipe 创建一个写入流
  //此种方法通过异步方法将数据传入服务器，节省了内存和提高了性能
          rs.pipe(res);
});

//获取用户上传的文件信息,并且在上传后返回渲染页
router.post("/up",single,function (req,res){
            arr.push(req.file);
            res.redirect("back");
});

router.post("/xmlup",function (req,res){
  res.send(req.file);
})

module.exports=router;
